class Array{
 private:
  int *data;
  int length;
 public:
  Array(int _len){
    data = new int[_len];
    length=_len;
  }
  ~Array(){
    delete [] data;
  }
  int get_length() const;
  int get_data(int _idx) const;
  void set_data(int _idx,int _val);
  int& operator [](int _idx);
};

int& Array::operator [](int _idx){
  return *(data +_idx);
}
int Array::get_address(int _idx) const{
  return data+_idx;
}

int Array::get_length()const{
  return length;
}

int Array::get_data(int _idx)const{
  return *(data + _idx);
}

void Array::set_data(int _idx,int _val){
  *(data + _idx) = _val;
}
